Conversation
| public class Waiter implements Runnable { | ||
|
|
||
| private final int id; | ||
| private final SynchronousQueue<Integer> dishes = new SynchronousQueue<>(); |
There was a problem hiding this comment.
Расскажите, пожалуйста, почему вы выбрали именно такую структуру? Как у вас дела с условием, что все накормлены примерно одинаково?
There was a problem hiding this comment.
Изначально идея была в том, что официант может принести только одно блюдо одному разработчику, поэтому я использовал SynchronousQueue для асинхронной передачи еды из общего пула разработчикам.
Но столкнулся с проблемой, что программисты получали еду по двум очередям, из-за чего возникала ошибка с выполнением условия, увидел ее при рандомизации времени поедания и обсуждения.
Перевёл обоих официантов на одну общую очередь кухни.
| } | ||
|
|
||
| private void startLunch() { | ||
| int devCount = 7; |
There was a problem hiding this comment.
Понимаю, что это всего лишь лаба, но предлагаю сделать человеческую конфигурацию, которую можно менять без рекомпила
|
|
||
| public Integer getDish() { | ||
| try { | ||
| while (true) { |
There was a problem hiding this comment.
Предлагаю избавиться от всех while true в коде, вроде тут без них вполне можно обойтись
| private void startLunch() { | ||
| int devCount = 7; | ||
|
|
||
| ExecutorService executorService = Executors.newCachedThreadPool(); |
There was a problem hiding this comment.
На очной демонстрации расскажите пж, почему вы выбрали именно такой тред пул. Стоит провести эксперименты и замерить, как разные тредпулы себя ведут и как объясняется их поведения
There was a problem hiding this comment.
Замеры сделал:
FIXED = 39727 ms
WORK_STEALING = 40627 ms
CACHED = 42535
SINGLE = не исполнился
| synchronized (second) { | ||
| eaten++; | ||
| System.out.println("Программист " + id + " ест блюдо #" + dish); | ||
| Thread.sleep(100); |
There was a problem hiding this comment.
забыл сразу сказать -- сделайте пж время поедания случайным, так интереснее
Усложненная задача об обедающих философах